#include <stdio.h>
// 例题出自 C陷阱和缺陷
void (*signal(int, void (*)(int)))(int);

// signal 是一个函数名  函数参数的类型是 int 和 void (*)(int))  整形  和 函数指针  该函数的返回类型为void，参数为int
// 去掉函数名和形参后
// 得到   void (*) (int)
//  这是一个函数指针类型  指向的函数  返回类型为 void， 参数为 int

// 说明 signal函数   的返回类型是 是一个指针   是一个函数指针   该函数的返回类型为 void 参数类型为 int

void (*signal(int, void (*)(int)))(int);
// 以上代码是一次函数声明
// signal 是函数名  函数的第一个参数是 int 第二个参数是 函数指针  该函数指针指向的函数 参数是 int 返回类型是 void, signal函数的返回类型也是一个函数指针， 该函数指针指向的函数 参数是 int 返回类型是 void

// 可以 把以上代码进行相关的简化
//  typedef void (*pf_t)(int); //该代码的意思是 把 void (*)(int) 类型重新定义为 pf_t
// 上述代码可以重新写为  pf_t signal (int, pf_t)
int main()
{

    return 0;
}